package com.dongzili.postgresql.custom.user.entity;


import java.time.LocalDateTime;
import java.util.List;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dongzili.postgresql.common.auth.LoginUser;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.IdType;
import lombok.experimental.Accessors;

/**
* 管理员管理
* &#064;TableName t_admin
*/
@DS("master")
@Data
@Accessors(chain = true)
@TableName(value ="\"t_admin\"")
public class User {

    @TableId(value="\"id\"", type = IdType.AUTO)
    private Integer id;

    /**
    * 用户名
    */
    @TableField("\"username\"")
    private String username;

    /**
    * 密码
    */
    @TableField("\"password\"")
    private String password;

    /**
    * 昵称
    */
    @TableField("\"nickname\"")
    private String nickname;

    /**
    * 手机
    */
    @TableField("\"phone\"")
    private String phone;

    /**
    * 电子邮箱
    */
    @TableField("\"email\"")
    private String email;

    /**
    * 最后登陆时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonProperty("lastUpdateTime")
    @TableField("\"lastUpdateTime\"")
    private LocalDateTime lastUpdateTime;

    /**
    * 角色ID
    */
    @TableField("\"roleId\"")
    private Integer roleId;

//    @TableField(exist = false)
//    private Role role;

    /**
    * 状态
    */
    @TableField("\"status\"")
    private Boolean status;

    /**
    * 创建时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonProperty("createTime")
    @TableField("\"createTime\"")
    private LocalDateTime createTime;

    /**
    * 更新时间
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonProperty("modifyTime")
    @TableField("\"modifyTime\"")
    private LocalDateTime modifyTime;

    /**
    * 创建人ID
    */
    @TableField("\"creatorId\"")
    private Integer creatorId;

    /**
    * 创建人名称
    */
    @TableField("\"creatorName\"")
    private String creatorName;

    /**
    * 修改人ID
    */
    @TableField("\"modifierId\"")
    private Integer modifierId;

    /**
    * 修改人名称
    */
    @TableField("\"modifierName\"")
    private String modifierName;

    @TableField(exist = false)
    private List<Integer> roleIds;

    public LoginUser toLoginUser() {
        LoginUser loginUser = new LoginUser();
        loginUser.setId(id);
        loginUser.setUsername(username);
        loginUser.setPassword(password);
        loginUser.setNickname(nickname);
        loginUser.setPhone(phone);
        loginUser.setEmail(email);
        loginUser.setRoleId(roleId);
        loginUser.setLastUpdateTime(lastUpdateTime);
        return loginUser;
    }

}
